package main

import (
	"fmt"

	"github.com/google/btree"
)

type foo struct {
	value int64
}

// Less btree 存放的东西必须实现 Less()，即 Item 接口
func (i *foo) Less(b btree.Item) bool {
	return i.value < b.(*foo).value
}

func main() {
	// 创建一颗 btree
	tree := btree.New(2)

	// 创建 3 个测试数据
	f1 := foo{value: 1}
	f2 := foo{value: 2}
	f3 := foo{value: 3}
	f4 := foo{value: 4}
	f5 := foo{value: 5}

	// 插入到 btree 中
	tree.ReplaceOrInsert(&f1)
	tree.ReplaceOrInsert(&f2)
	tree.ReplaceOrInsert(&f3)
	tree.ReplaceOrInsert(&f4)
	tree.ReplaceOrInsert(&f5)

	// 按照升序打印 >= 0 的数据
	tree.AscendGreaterOrEqual(&foo{value: 2}, func(item btree.Item) bool {
		f := item.(*foo)
		fmt.Println(f.value)
		return true
	})
	tree.Clone()
}